Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import { appGetLayout } from "components/AppRoute";
import MarkdownPage, {
MarkdownPageProps,
} from "features/markdown/MarkdownPage";
import { AUTH, GLOBAL, NOTIFICATIONS } from "i18n/namespaces";
import { GetStaticPaths, GetStaticProps } from "next";
import nextI18nextConfig from "next-i18next.config";
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
async function getMarkdownPageBySlug(
slug: Array<string>,
): Promise<MarkdownPageProps> {
const md = await import(`markdown/${slug.join("/")}.md`);
return { slug, frontmatter: md.attributes, content: md.html };
}
export const getStaticPaths: GetStaticPaths = () => {
// Return empty paths for fast builds
// Pages will be generated on-demand with fallback: 'blocking'
return {
paths: [],
fallback: "blocking",
};
};
export const getStaticProps: GetStaticProps = async ({ locale, params }) => {
const slug = params!.slug as Array<string>;
try {
return {
props: {
...(await serverSideTranslations(
locale ?? "en",
[GLOBAL, AUTH, NOTIFICATIONS],
nextI18nextConfig,
)),
page: await getMarkdownPageBySlug(slug),
},
};
} catch {
// Markdown file doesn't exist or path is invalid
return { notFound: true };
}
};
export default function Markdown({ page }: { page: MarkdownPageProps }) {
return <MarkdownPage {...page} />;
}
Markdown.getLayout = appGetLayout({
isPrivate: false,
});
|